package de.nava.mlsample.web;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.core.util.MultivaluedMapImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.ws.rs.core.MultivaluedMap;
@RestController
public class QueryProxyController {
private static final Logger logger = LoggerFactory.getLogger(SampleRESTwithJSONController.class);
@Autowired
protected Client jerseyClient;
@Autowired
protected String markLogicBaseURL;
@RequestMapping(
value = "/search",
produces = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<String> query() {
WebResource webResource = jerseyClient.resource(String.format("%s/v1/search", markLogicBaseURL));
String payload = "";
MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
queryParams.add("format", "json");
queryParams.add("view", "all");
queryParams.add("options", "all");
queryParams.add("start", "1");
queryParams.add("pageLength", "10");
ClientResponse response = webResource
.queryParams(queryParams)
.type("application/json")
.post(ClientResponse.class, payload);
return new ResponseEntity<String>(response.getEntity(String.class), HttpStatus.valueOf(response.getStatus()));
}
}